package org.ala.tree.lsm.tools;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author ala
 * @date 2025年5月25日
 */
public class FileTools {
	
	
	/**
	 * 	检测目录是否存在，不存在则创建
	 */
	public static void tryMakeDir(String path) {
		File fd = new File(path);
		if (!fd.exists()) {
			fd.mkdirs();
		}
	}
	
	
	/**
	 * 	如果文件存在，删除
	 */
	public static boolean fileDel(String path) {
		File fd = new File(path);
		if (fd.exists()) {return fd.delete();}
		return false;
	}
	/**
	 * 	目录下的文件数
	 */
	public static int fileCount(String dir) {
		File file = new File(dir);
		return file.listFiles(new FileFilter() {
			public boolean accept(File pathname) {
				return pathname.getName().endsWith("sstable");
			}
		}).length;
	}
	/**
	 * 	遍历目录下的文件，包括子目录
	 * @throws IOException 
	 */
	public static List<Path> filesAll(String dir, String ext) throws IOException {
		List<Path> paths = new ArrayList<>();
		Files.walkFileTree(Path.of(dir), new SimpleFileVisitor<Path>() {
			public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
				String fileName = file.getFileName().toString();
				if (fileName.endsWith(ext)) { paths.add(file); }
				return FileVisitResult.CONTINUE;
			}
		});
		return paths;
	}
	
}
